/**
 *  Question 3<br/>
 <br/>
 Write down your thoughts and skeleton classes & interfaces to design an integration framework to support integrating hundreds of heterogeneous systems,
 systems may use different languages like C++/JAVA/.Net/Scala etc. The requirements are:<br/>
 <br/>
 1.	Different heterogeneous system need submit uniform format message for aggregation and consolidation purpose,
 for example extracting the amount from the message and doing some statistics, like sum, average etc.<br/>
 2.	Different system will consume messages from other systems and represent in its own way.<br/>
 3.	The messages must be ensure delivered<br/>
 <br/>
 <br/>
 answer:<br/>
 1. submit to a center, in order to keep a uniform message, there should be a 'strategy' for select a 'adaptor', also for different operation, there should be a 'visitor'<br/>
 2. consume in different systems, also use 'strategy, but in order to represent in its own way, each consume should use a proxy or adaptor for convert the message to its own format,
and for each adaptor, there should be some template method, and builder for generate the proxy for further process<br/>
 3. for ensure the message must be delivered, we must use a 'state' or 'responsibilty chain' and 'observer' to make sure the message can be consumed successfully and when it consumed, we need to delete the message, there need a response chain or state mode for
 chose the operator to handle the come back message,also for monitor the result, there should be a 'aspect' around the interface entrance.
 server : template-receiveRequest,workProgress,implement in different system, Strategy,with adaptor for select a adaptor according to message type, adaptor-convert message to unique format, visitor-make differnt operation
 on message, observer-subject side, notify the system which generated the message with message state
 client, generate the message, record the message in a context, template method-define workflow, and implement by different system, 'state' with 'responsibility chain' for next operation base on the state, and observer-observer
 side for receive the notify from message receiver
 */
package interview.CooperateSystem;